home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 117 / PC Guia 117.iso / Software / Utils / Software2 / Product11 / Setup.exe / MT-3.16-full-en_US / mt-send-entry.cgi < prev    next >
Text File  |  2005-03-17  |  2KB  |  86 lines

  1. #!/usr/bin/perl -w
  2.  
  3. # Copyright 2001-2005 Six Apart. This code cannot be redistributed without
  4. # permission from www.movabletype.org.
  5. #
  6. # $Id: mt-send-entry.cgi 10463 2005-03-17 23:01:06Z ezra $
  7. use strict;
  8.  
  9. my($MT_DIR);
  10. BEGIN {
  11.     if ($0 =~ m!(.*[/\\])!) {
  12.         $MT_DIR = $1;
  13.     } else {
  14.         $MT_DIR = './';
  15.     }
  16.     unshift @INC, $MT_DIR . 'lib';
  17.     unshift @INC, $MT_DIR . 'extlib';
  18. }
  19.  
  20. eval {
  21.     require CGI;
  22.     require MT::Mail;
  23.     require MT::Entry;
  24.     require MT::Blog;
  25.     require MT;
  26.     require MT::Util;
  27.  
  28.     my $mt = MT->new( Config => $MT_DIR . 'mt.cfg', Directory => $MT_DIR )
  29.         or die MT->errstr;
  30.     my $q = CGI->new;
  31.  
  32.     my $to = $q->param('to');
  33.     my $from = $q->param('from');
  34.     my $entry_id = $q->param('entry_id');
  35.     my $redirect = $q->param('_redirect');
  36.     my $msg = $q->param('message') || '';
  37.  
  38.     unless ($entry_id && $redirect) {
  39.         die "Missing required parameters\n";
  40.     }
  41.  
  42.     unless ($to = MT::Util::is_valid_email($to)) {
  43.         die "Invalid 'To' email address";
  44.     }
  45.     unless ($from = MT::Util::is_valid_email($from)) {
  46.         die "Invalid 'From' email address";
  47.     }
  48.  
  49.     for ($to, $from) {
  50.         my $cnt = $_ =~ tr/@/@/;
  51.         die "Invalid email address" if $cnt != 1;
  52.         die "Invalid email address" if /[\r\n,]/;
  53.     }
  54.     die "Message is too long"
  55.         if length($msg) > 250;
  56.  
  57.     my $entry = MT::Entry->load($entry_id)
  58.         or die "Invalid entry ID '$entry_id'";
  59.     my $blog = MT::Blog->load($entry->blog_id);
  60.  
  61.     my $link = $blog->archive_url;
  62.     $link .= '/' unless $link =~ m!/$!;
  63.     $link .= $entry->archive_file;
  64.  
  65.     my $body = <<BODY;
  66. $from has sent you a link!
  67.  
  68. $msg
  69.  
  70. Title: @{[ $entry->title ]}
  71. Link: $link
  72. BODY
  73.     my %head = ( To => $to, From => $from,
  74.                  Subject => '[' . $blog->name . '] Recommendation: ' .
  75.                             $entry->title );
  76.  
  77.     MT::Mail->send(\%head, $body)
  78.         or die "Error sending mail: ", MT::Mail->errstr;
  79.  
  80.     print $q->redirect($redirect);
  81. };
  82. if ($@) {
  83.     print "Content-Type: text/html\n\n";
  84.     print "Got an error: $@";
  85. }
  86.